#pragma once

/**
ClientSystem is responsible for everything that has to do with client side, eg. the interactive
part of the game. Client reads input from user, reads network packets from server and renders 
the whole scene and gui. 
**/
class Client{
public:
	static Client &getSingleton();
	static Client *getSingletonPtr();
	///Initializes all client subsystems (ogre, gui, client networking)
	virtual void	init()=0;
	///Shuts down all client side systems
	virtual void	shutdown()=0;
	/// Runs entire client frame (includes rendering, reading from network, input, etc..)
	virtual void	update()=0;
	/// Returns false if windows has been closed (also when window is closed client is shut down)
	virtual bool	isRunning()=0;
	/// Initializes a connection to server
	virtual void	connect(const char *host)=0;
	/// Disconnects from a server
	virtual void	disconnect()=0;
};